package com.zrrd.jt_admin.shop.skus.controller;


import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import com.zrrd.jt_admin.common.bo.SkusBo;
import com.zrrd.jt_admin.common.dto.StatusDto;
import com.zrrd.jt_admin.common.entity.Skus;
import com.zrrd.jt_admin.common.response.ResponseResult;
import com.zrrd.jt_admin.common.page.SkusPageVo;
import com.zrrd.jt_admin.shop.skus.service.SkusService;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.BeanUtils;
import org.springframework.web.bind.annotation.*;

import javax.annotation.Resource;
import java.util.List;
import java.util.stream.Collectors;

/**
 * <p>
 *  前端控制器
 * </p>
 *
 * @author wanjl
 * @since 2024-07-01
 */
@RestController
@RequestMapping("/admin/skus")
@ResponseBody
public class SkusController {
    @Resource
    private SkusService skusService;

    @GetMapping("/{page}")
    public ResponseResult findByPage(@PathVariable("page") int page,
                                     @RequestParam(value = "limit",required = false,defaultValue = "10")Integer limit,
                                     @RequestParam(value = "keyword",required = false)String keyword) {

        PageHelper.startPage(page,limit);
        List<Skus> list = skusService.list();
        PageInfo<Skus> pageInfo = new PageInfo<>(list);
        List<SkusBo> skusBoList = pageInfo.getList().stream().map(skus -> {
            SkusBo skusBo = new SkusBo();
            BeanUtils.copyProperties(skus, skusBo);
            return skusBo;
        }).collect(Collectors.toList());
        SkusPageVo skusPageVo = new SkusPageVo();
        skusPageVo.setList(skusBoList);
        skusPageVo.setTotalCount(pageInfo.getTotal());

        return ResponseResult.queryResponse(skusPageVo);
    }

    @ApiOperation(value = "修改状态", notes = "根据id修改状态")
    @PutMapping("/{id}/updateStatus")
    @ResponseBody
    public ResponseResult setStatus(@PathVariable("id") Integer id,@RequestBody StatusDto statusDto) {
        Boolean bStatus=statusDto.getStatus()==1?true:false;

        boolean flag = skusService.lambdaUpdate()//使用lambda形式的修改
                .eq(Skus::getId, id) //比较id
                .set(Skus::getStatus, bStatus)//进行修改
                .update();//执行修改
        return ResponseResult.updateResponse(flag);
    }

}

